잘 쓰고 있던 OpenGrok 서버가 갑자기 맛이 가는 바람에 부랴부랴 대안을 찾아야 했는데 마땅한 서버가 없어서 로컬 머신에 Docker로 설치하는 방법을 찾아 보았다. 여기 소개된 내용은 Docker Hub에서 자세한 설명을 찾을 수 있다.
Docker가 설치되어 있다면 command창에서 다음의 명령으로 OpenGrok docker를 pull한다.
docker pull opengrok/docker
Pulling이 끝나면 목적에 소스와 indexing결과가 저장될 공간을 만들어 준다. src에는 분석할 소스를 넣고 bin에는 편의를 위한 스크립트를 넣을 예정이다.
mkdir -p ~/opengrok/bin mkdir -p ~/opengrok/src mkdir -p ~/opengrok/etc mkdir -p ~/opengrok/data
이제, 8080 port에 접속 설정을 하고 위에서 만든 volume들을 docker에 마운트 시켜준다. Git server에 접근하기 위해 키 관련 설정을 해주어야 하는데, 귀찮아서 그냥 .ssh 디렉토리를 마운트 시켜 주었다.
docker run -d \ --name opengrok \ -p 8080:8080/tcp \ -v ~/opengrok/bin/:/opengrok/bin/ \ -v ~/opengrok/src/:/opengrok/src/ \ -v ~/opengrok/etc/:/opengrok/etc/ \ -v ~/opengrok/data/:/opengrok/data/ \ -v ~/.ssh:/root/.ssh \ opengrok/docker:latest
이제 해당 서버의 콘솔을 열고 인덱싱 명령을 수행하면 된다. GUI가 없다면 다음의 명령으로 실행 중인 docker에 접속할 수 있다.
docker exec -it <docker_container_id> bash
서버에 접속한 후 인덱싱을 수행하는 명령어는 다음과 같다.
export OPENGROK_DIR=/opengrok java \ -Djava.util.logging.config.file=$OPENGROK_DIR/etc/logging.properties \ -Xmx1024m \ -jar $OPENGROK_DIR/lib/opengrok.jar \ -c /usr/local/bin/ctags \ -s $OPENGROK_DIR/src -d $OPENGROK_DIR/data -H -P -S -G \ -W $OPENGROK_DIR/etc/configuration.xml -U http://localhost:8080/
인덱싱이 끝나면 웹브라우져에서 http://localhost:8080으로 접속하면 된다.
위의 인덱싱 명령어가 너무 길어서 입력하기 힘들기 때문에 source code를 업데이트하고 인덱싱 하는 과정을 묶어서 다음과 같이 스크립트로 만들고 ~/opengrok/bin 안에 넣어 두면 편리하게 사용할 수 있다.